package cn.gjsm.miukoo.image;

import cn.gjsm.miukoo.Constants;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import java.io.IOException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.Base64;
import java.util.Map;
// Jsoup 库来发送一个 HTTP POST 请求到 OpenAI 的图像生成 API，然后使用 JSON 解析库将响应解析为 JSON 对象。具体来说，它会使用 Jsoup 的 connect() 方法来创建一个连接到给定 URL 的文档对象，然后通过 header() 方法添加 HTTP 头部信息。 ignoreHttpErrors() 和 ignoreContentType() 方法用于忽略 HTTP 错误和内容类型错误。
//
//接下来，使用 requestBody() 方法将请求正文设置为一个 JSON 字符串，并使用 post() 方法发送 POST 请求。最后，使用 JSON 解析库将响应主体解析为 JSON 对象，并使用 getJSONArray() 方法获取 data 字段（即响应中的图像 URL）。最后，使用 for 循环遍历 data 数组，并使用 getJSONObject() 和 get() 方法获取 URL，然后将 URL 打印到控制台。


public class Image {
    public static void main(String[] args) throws IOException {
        //第 1 行使用 Jsoup 库的 connect 方法向 OpenAI 发送请求，并使用了特定的头信息和请求正文。
        Document document = Jsoup.connect("https://api.openai.com/v1/images/generations")
                //第 2 行设置了请求头的 "Authorization" 字段，并使用了 Constants.OPENAPI_TOKEN 作为令牌。
                .header("Authorization", "Bearer " + Constants.OPENAPI_TOKEN)
                //第 3 行设置了请求头的 "Content-Type" 字段，表示请求正文的内容类型为 "application/json"。
                .header("Content-Type","application/json")
                //第 4 行忽略了 HTTP 错误。
                .ignoreHttpErrors(true)
                //第 5 行忽略了内容类型。
                .ignoreContentType(true)
                //第 6 行设置了请求正文。
                .requestBody(
                        "{" +
                                "\"prompt\":\"性感美女\"," +
                                "\"n\":1," +
                                "\"size\":\"1024x1024\"," +
                                "\"response_format\":\"url\"" +
                            "}"
                )
                //第 7 行使用了 Jsoup 库的 post 方法来发送请求。
                .post();
        //第 8 行使用 JSON 库的 parseObject 方法将响应正文解析为 JSON 对象。
        JSONObject jsonObject = JSON.parseObject(document.body().text());
        //第 9 行从 JSON 对象中提取出了一个名为 "data" 的 JSON 数组。
        JSONArray data = jsonObject.getJSONArray("data");
        //第 10-12 行在循环中遍历 JSON 数组，并提取每个对象中的 "url" 字段并打印。
        for (int i = 0; i < data.size(); i++) {
            JSONObject temp = data.getJSONObject(i);
            System.out.println(temp.get("url"));
        }
    }
}
